<?php
class OrdenTrabajosController extends AppController {

    var $name = 'OrdenTrabajos';
    var $components = array('Search.Prg');

    //var $uses = array('Estado','OrdenTrabajo');

    public $presetVars = array(
            array('field' => 'empresa', 'type' => 'value'));

    function index($idEstado = null) {
        $this->OrdenTrabajo->recursive = 0;
        $this->OrdenTrabajo->Estado->recursive = 0;
        $this->Prg->commonProcess();
        $this->paginate['conditions'] = $this->OrdenTrabajo->parseCriteria($this->passedArgs);
        $estados = $this->OrdenTrabajo->Estado->find('all',array('fields',array('Estado.id','Estado.title')));
        $this->set(compact('estados','idEstado'));
        if($idEstado==null) {
            $this->set('ordenTrabajos', $this->paginate());
        }else {
            $this->set('ordenTrabajos', $this->paginate('OrdenTrabajo', array('OrdenTrabajo.estado_id' => $idEstado)));
        }
    }

    function index_produccion($idEstado = null) {
        $this->OrdenTrabajo->recursive = 0;
        $this->OrdenTrabajo->Estado->recursive = 0;
        $this->Prg->commonProcess();
        $this->paginate['conditions'] = $this->OrdenTrabajo->parseCriteria($this->passedArgs);
        $estados = $this->OrdenTrabajo->Estado->find('all',array('fields',array('Estado.id','Estado.title')));
        $this->set(compact('estados','idEstado'));
        if($idEstado==null) {
            $this->set('ordenTrabajos', $this->paginate());
        }else {
            $this->set('ordenTrabajos', $this->paginate('OrdenTrabajo', array('OrdenTrabajo.aceptado' => $idEstado)));
        }
    }
    function index_admin($idEstado = null) {
        $this->OrdenTrabajo->recursive = 0;
        $this->OrdenTrabajo->Estado->recursive = 0;
        $this->Prg->commonProcess();
        $this->paginate['conditions'] = $this->OrdenTrabajo->parseCriteria($this->passedArgs);
        $estados = $this->OrdenTrabajo->Estado->find('all',array('fields',array('Estado.id','Estado.title')));
        $this->set(compact('estados','idEstado'));
        if($idEstado==null) {
            $this->set('ordenTrabajos', $this->paginate());
        }else {
            $this->set('ordenTrabajos', $this->paginate('OrdenTrabajo', array('OrdenTrabajo.estado_id' => $idEstado)));
        }
    }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('ordenTrabajo', $this->OrdenTrabajo->read(null, $id));
    }

    function view_produccion($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('ordenTrabajo', $this->OrdenTrabajo->read(null, $id));
    }

    function add($idOI = null) {
//        if (!$idOI && empty($this->data)) {
//            $this->Session->setFlash(__('Seleccione una orden de inspeccion', true));
//            $this->redirect(array('action' => 'index'));
//        }
        if (!empty($this->data)) {
            $this->OrdenTrabajo->create();
            $this->OrdenTrabajo->set("mes", $this->data["OrdenTrabajo"]["fecha"]["month"]);
            $this->OrdenTrabajo->set("anio", $this->data["OrdenTrabajo"]["fecha"]["year"]);
             $this->OrdenTrabajo->set("aceptado",0);
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se guardo satisfactoriamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('El registro no pudo ser ingresado debido a un problema. Verifique si no es un registro duplicado', true));
            }
        }
        $ordenInspeccion = $this->OrdenTrabajo->OrdenInspeccion->findById($idOI);
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $this->data["OrdenTrabajo"]["orden_inspeccion_id"] = $idOI;
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $ultimo = $this->OrdenTrabajo->find('first',
                array('conditions' =>
                array('OrdenTrabajo.mes' => date('m'),
                        'OrdenTrabajo.anio' => date('Y')),
                'order' => "OrdenTrabajo.id DESC"));
        $this->data["OrdenTrabajo"]["correlativo"] = $ultimo["OrdenTrabajo"]["correlativo"] + 1;
        $this->set(compact('ordenInspeccion', 'tipoOrdenTrabajos', 'estados'));
    }

    function add_1($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function add_2($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function add_3($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function add_4($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function add_5($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }
    function add_6($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }
    function add_7($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index_admin'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $ordenInspeccions = $this->OrdenTrabajo->OrdenInspeccion->find('list');
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function edit_estado($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Registro no encontrado', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->OrdenTrabajo->save($this->data)) {
                $this->Session->setFlash(__('El registro se actualizo correctamente', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('La informacion no se guardo debido a un error interno.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->OrdenTrabajo->read(null, $id);
        }
        $ordenInspeccions = $this->OrdenTrabajo->OrdenInspeccion->find('list');
        $tipoOrdenTrabajos = $this->OrdenTrabajo->TipoOrdenTrabajo->find('list');
        $estados = $this->OrdenTrabajo->Estado->find('list');
        $this->set(compact('ordenInspeccions', 'tipoOrdenTrabajos', 'estados'));
    }

    function delete($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('No se encontro registro', true));
            $this->redirect(array('action'=>'index_admin'));
        }
        if ($this->OrdenTrabajo->delete($id)) {
            $this->Session->setFlash(__('Registro eliminado exitosamente', true));
            $this->redirect(array('action'=>'index_admin'));
        }
        $this->Session->setFlash(__('No se pudo eliminar registro', true));
        $this->redirect(array('action' => 'index_admin'));
    }
}
?>